JavaScript 中的对象是指带有属性和方法的特殊数据类型。JavaScript 中的所有事物都是对象,比如字符串、数组、函数等。对象分为内置对象和原生对象,它们的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括了一些在运行过程中动态创建的对象。从语法层面来看的话,原生对象需要使用
new创建,而内置对象则不需要。JavaScript 常见的内置对象有:
Array、String、Math、Date几种。
Array 的元素可以是任意的类型。Array 的创建有两种方式,使用构造函数:
  | 
  | 
或者使用字面量来创建数组:
  | 
  | 
读写
Array 的取值和赋值可以通过 [] 进行。如:
  | 
  | 
上面的代码说明,Array 可以灵活的改变长度,越界和未赋值的部分,都是 undefined。
栈方法
栈方法,顾名思义,就是把数组当做栈来处理,也就是先进先出的原则。主要有以下几个方法:
push
  | 
  | 
push 的作用是将元素序列添加到 Array 的尾部,其返回值是添加后的数组长度。
pop
  | 
  | 
pop 的作用是移除 Array 的最后一个元素,其返回值是被移除的元素。
unshift
  | 
  | 
unshift 的作用是将元素序列添加到 Array 的头部,其返回值是添加后的数组长度。
shift
  | 
  | 
pop 的作用是移除 Array 的第一个元素,其返回值是被移除的元素。
转字符串
join 方法可以将 Array 转换成一个字符串,语法如下:
  | 
  | 
反序
reverse 方法可以将 Array 反序排列,如下:
  | 
  | 
排序
sort 方法可以根据传入的参数,对 Array 进行排序:
  | 
  | 
需要注意的是,sort 方法在对数值进行排序时,也是先将元素转为 String 类型在排序,因此,数值的排序是按首位排序,首位相同再对第二位进行比较:
  | 
  | 
如果需要对数值进行排序,那么需要给 sort 传入一个匿名函数:
  | 
  | 
连接其他数组
concat 方法用于两个或多个数组的连接:
  | 
  | 
截取
  | 
  | 
slice 方法越界,会截取所有在此范围内的元素。slice 方法可以接受两个参数,start 和 end,其中 start 是必需的,start 参数可以是负数,如果是负数,表示从数组尾部开始计算。
  | 
  | 
当 slice 方法的参数是负数时,会用数组的长度加上这个数,来确定起始或结束的位置。
删除、插入和替换
删除的语法是 arr.splice(index,count),参数含义如下:
| 形参 | 含义 | 
|---|---|
| index | 要删除的起始位置 | 
| count | 要删除的元素个数 | 
count 如不填,则删除 index 后的所有元素,如为 0,则不删除任何元素,示例如下:
  | 
  | 
splice 的返回值是被删除的数组片段。
插入的语法是 arr.splice(index,0,item1,...,itemX),返回值是空数组;
替换的语法是 arr.splice(index,count,item1,...,itemX),返回值是被删除的数组片段;
查找元素下标
indexOf 方法用于查找元素在数组中的位置,可以接收两个参数:
| 形参 | 含义 | 
|---|---|
| searchValue | 必需,要查找的元素 | 
| startIndex | 可选,索引的起始位置,不填则从 0 开始 | 
返回值是 Number 类型,如未找到该元素,则返回 -1,如有多个元素,则返回第一个元素的下标:
  | 
  | 
lastIndexOf 方法和 indexOf 作用相同,不同的地方是从数组末尾开始查找。